/**
 * 简化的平台处理接口定义
 */

import { PublishPlatform } from '../../types/core';
import { IValidationResult } from '../../utils/validators';

export { PublishPlatform, IValidationResult };

/**
 * 图片信息接口
 */
export interface IImageInfo {
  /** 图片URL或base64数据 */
  src: string;
  
  /** 图片类型 */
  type: 'url' | 'base64' | 'file';
  
  /** 文件名 */
  filename?: string;
  
  /** MIME类型 */
  mimeType?: string;
  
  /** 图片尺寸 */
  dimensions?: {
    width: number;
    height: number;
  };
  
  /** 文件大小（字节） */
  size?: number;
}

/**
 * 内容对象接口
 */
export interface IContent {
  /** 标题 */
  title: string;
  
  /** 内容 */
  content: string;
  
  /** 内容格式 */
  format?: 'html' | 'markdown' | 'text';
  
  /** 摘要 */
  summary?: string;
  
  /** 标签 */
  tags?: string[];
  
  /** 作者 */
  author?: string;
  
  /** 分类 */
  category?: string;
  
  /** 封面图片 */
  coverImage?: IImageInfo;
  
  /** 内容图片 */
  images?: IImageInfo[];
}



/**
 * 发布选项接口
 */
export interface IPublishOptions {
  /** 是否为草稿 */
  isDraft?: boolean;
  
  /** 定时发布时间 */
  scheduledTime?: Date;
  
  /** 自定义选项 */
  customOptions?: Record<string, any>;
}

/**
 * 发布结果接口
 */
export interface IPublishResult {
  /** 是否成功 */
  success: boolean;
  
  /** 发布URL */
  url?: string;
  
  /** 文章ID */
  articleId?: string;
  
  /** 错误信息 */
  error?: string;
  
  /** 额外信息 */
  metadata?: Record<string, any>;
}

/**
 * 平台处理器接口
 */
export interface IPlatformHandler {
  /** 平台名称 */
  readonly platform: PublishPlatform;
  
  /**
   * 格式化内容
   * @param content 原始内容
   * @returns 格式化后的内容
   */
  formatContent(content: IContent): Promise<IContent>;
  
  /**
   * 验证内容
   * @param content 内容对象
   * @returns 验证结果
   */
  validateContent(content: IContent): IValidationResult;
  
  /**
   * 发布内容
   * @param content 内容对象
   * @param options 发布选项
   * @returns 发布结果
   */
  publish(content: IContent, options?: IPublishOptions): Promise<IPublishResult>;
}
